From: Florian Müllner Date: Thu, 9 Apr 2020 10:50:39 +0000 (+0200) Subject: calendar: Update events on changes X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~684^2^2~465 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=8d79f6f4c89a96475f5adbb13ea8673da4d81337;p=gnome-shell.git calendar: Update events on changes We track messages so that we can account for just added and removed events instead of having to rebuild the entire list, however it's also possible that the time or summary of an existing event changed. Account for that by updating existing messages in-place. https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1192 --- diff --git a/js/ui/calendar.js b/js/ui/calendar.js index 286aac1e1..f38544c8b 100644 --- a/js/ui/calendar.js +++ b/js/ui/calendar.js @@ -701,12 +701,11 @@ var Calendar = GObject.registerClass({ var EventMessage = GObject.registerClass( class EventMessage extends MessageList.Message { _init(event, date) { - super._init('', event.summary); + super._init('', ''); - this._event = event; this._date = date; - this.setTitle(this._formatEventTime()); + this.update(event); this._icon = new St.Icon({ icon_name: 'x-office-calendar-symbolic' }); this.setIcon(this._icon); @@ -718,6 +717,13 @@ class EventMessage extends MessageList.Message { super.vfunc_style_changed(); } + update(event) { + this._event = event; + + this.setTitle(this._formatEventTime()); + this.setBody(event.summary); + } + _formatEventTime() { let periodBegin = _getBeginningOfDay(this._date); let periodEnd = _getEndOfDay(this._date); @@ -901,6 +907,7 @@ class EventsSection extends MessageList.MessageListSection { this._messageById.set(event.id, message); this.addMessage(message, false); } else { + message.update(event); this.moveMessage(message, i, false); } }